package com.yuw.oop;

/**
 * 使用抽象，封装学生类的共同的属性和行为
 * Student类就是对学生对象的规范定义
 */
public class Student {

    // 属性---成员变量【类范围中定义的变量】

    // 年龄
    private int stuAge;
    // 学号
    private String stuNum;
    // 学校
    private String stuSchoolName;

    // 构造方法：默认的构造方法
    public Student(){
        System.out.println("调用了默认的构造方法");
    }
    // 构造方法：自定义的构造方法
    public Student(int stuAge, String stuNum, String stuSchoolName, String stuName) {
        this(); // 只能放在第一行
        System.out.println("调用了自定义的构造方法");
        this.stuAge = stuAge;
        this.stuNum = stuNum;
        this.stuSchoolName = stuSchoolName;
        this.stuName = stuName;
    }

    // getter/setter接口
    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuNum() {
        return stuNum;
    }

    public void setStuNum(String stuNum) {
        this.stuNum = stuNum;
    }

    public String getStuSchoolName() {
        return stuSchoolName;
    }

    public void setStuSchoolName(String stuSchoolName) {
        this.stuSchoolName = stuSchoolName;
    }

    // 行为---成员方法【类范围中定义的方法】

    /**
     * 学生学习的行为
     */
    public void doStuding() {
        System.out.println(stuName + " am do studing...");
        String strAddress = "tjise"; // 局部变量
        String stuName = "小明"; // 局部变量和成员变量名字一样，局部变量覆盖了成员变量的值
        // 判定原则：范围最小优先原则；就近原则；
        System.out.println(stuName + " am do studing at " + strAddress);
    }

    /**
     * 学生考试行为
     */
    public void exam() {
        System.out.println("I am examing...");
    }

    /**
     * 学生玩游戏的行为
     */
    public void playGames() {
        System.out.println("I am playing games...");
    }

    // 姓名属性
    private String stuName;
}
